package co.edu.udea.xyz.bl;

import java.util.Date;
import java.util.List;

import co.edu.udea.xyz.dto.Solicitud;
import co.edu.udea.xyz.util.exception.BLInversionesException;
import co.edu.udea.xyz.util.exception.XYZException;

public interface SolicitudService {
	
	/**
	 * Metodo que permite obtener una de las solicitudes.
	 * @param idSolicitud
	 * @return Solicitud
	 * @throws BLInversionesException
	 * @throws XYZException
	 */
	public Solicitud obtenerSolicitud(int idSolicitud)throws BLInversionesException, XYZException;
	
	/**
	 * Metodo que permite obtener el listado de las solicitudes.
	 * @return Lista de Solicitudes
	 * @throws BLInversionesException
	 * @throws XYZException
	 */
	public List<Solicitud> obtenerListaSolicitudes()throws BLInversionesException, XYZException;
	
	
	/**
	 * Metodo que permite guardar una solicitud en la base de datos
	 * @param idSolicitud
	 * @param estado
	 * @param tipo_Solicitud
	 * @param fecha_envio
	 * @param texto_Solicitud
	 * @param cedulaCliente
	 * @param idSucursal
	 * @param idProducto
	 * @throws BLInversionesException
	 * @throws XYZException
	 */
	public void guardarSolicitud(int idSolicitud,String estado,int tipo_Solicitud,Date fecha_envio,String texto_Solicitud,
			int cedulaCliente, int idSucursal, int idProducto)throws BLInversionesException, XYZException;
	
	
	
	/**
	 *  Metodo que permite actualizar una solicitud en la base de datos
	 * @param idSolicitud
	 * @param estado
	 * @param tipo_Solicitud
	 * @param fecha_envio
	 * @param texto_Solicitud
	 * @param cedulaCliente
	 * @param idSucursal
	 * @param idProducto
	 * @throws BLInversionesException
	 * @throws XYZException
	 */
	public void actualizarSolicitud(int idSolicitud,String estado,int tipo_Solicitud,Date fecha_envio,String texto_Solicitud,
			int cedulaCliente, int idSucursal, int idProducto)throws BLInversionesException, XYZException;
	
	/**
	 * Metodo para responder una solicitud hacia el cliente.
	 * @param idSolicitud
	 * @param idEncuesta
	 * @param idGestor
	 * @param fechaRespuesta
	 * @param texto_Respuesta
	 * @throws BLInversionesException
	 * @throws XYZException
	 */
	public void responderSolicitud(int idSolicitud, int idEncuesta, int idGestor, Date fechaRespuesta, String texto_Respuesta)throws BLInversionesException, XYZException;
	
	/**
	 * Metodo para buscar las solicitudes que no han sido resueltas.
	 * @return
	 * @throws BLInversionesException
	 * @throws XYZException
	 */
	public List<Solicitud> obtenerSolicitudesSinResponder()throws BLInversionesException, XYZException;
	
}
